excessive abstraction